package factory.v2;

/**
 * 水果工厂类，工厂模式的核心，负责生产各种水果
 * 扩展性：如果需要新的水果，则需要调用该类的构造方法（耦合），如何解耦？
 * 使用反射技术,与具体的水果都解耦了
 *
 */
public class FruitFactory {
    public static Fruit makeFruit(String  name){
        Object fruit=null;

        try {
            fruit=Class.forName("factory.v2."+name). newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


        return (Fruit) fruit;
    }

}
